package com.lanou3g.code0423;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Socket;
import java.net.SocketException;

/**
 * Created by dllo on 18/4/23.
 */
//UDP不适合传递大数据,适合传递小,对速度要求比较高的数据
public class ReceiveClient {
    public static void main(String[] args) {
        try {
            DatagramSocket ds = new DatagramSocket(7788);
            // DatagramSocket(端口号);
            // UDP协议使用DatagramSocket
            // ds对象可以用来接收发送数据,准备接收数据的时候,需要在构造方法中,指定一个端口号
            // 如果没有指定端口号,那么会随机绑定一个端口号
            // 这时,发送方就会不知道向哪一个端口发数据
            byte[] buf = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buf, buf.length);
            //发送和接收都需要使用DatagramPacket包
            ds.receive(packet);
            //接收数据到packet
            String data = new String(packet.getData(), 0, packet.getLength());
            //从packet里获取数据
            System.out.println(data);

            byte[] s = "我收到了".getBytes();
            //收件方的地址
            System.out.println(packet.getAddress());
            System.out.println(packet.getPort());//端口
            DatagramPacket re = new DatagramPacket(s, s.length,
                    packet.getAddress(), packet.getPort());
            ds.send(re);//发送数据给收件方
            ds.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
